package com.clarence.dada.core.enums;

import lombok.Getter;

/**
 * 错误码
 *
 * @author GD
 * @since 2018/5/2 15:15
 */
@Getter
public enum ErrorEnum {

    /********************************✨    系统(000 ~ 199)   ✨*************************************/
    ERROR_SYSTEM("000", "系统异常"),
    ERROR_ILLEGAL_PARAMS("100", "非法参数"),
    CANT_OPERATION_ADMIN("101", "不能操作系统管理员"),
    UPLOAD_ERROR("102", "上传错误"),
    UPLOAD_LARGE_ERROR("103", "文件过大上传失败"),
    TOKEN_EXPIRED("104", "登录已过期，请重新登录"),
    TOKEN_ERROR("105", "认证失败"),
    NO_PRIVILEGES("106", "没有该操作权限"),
    ERROR_VERIFICATION_CODE("107", "验证码错误"),
    NO_PAGE_ERROR("108", "请求接口不存在或用户未登录"),
    FILE_READING_ERROR("109", "读取不到该文件!"),
    FILE_NOT_FOUND("110", "文件找不到!"),
    NO_CURRENT_USER("111", "文件找不到!"),
    CANT_OPERATION_SYSTEM("112", "不能操作系统管理"),
    ENUM_NOT_EXIST("113", "枚举类型不存在"),
    HTTP_CONTEXT_ERROR("114", "获取不到http context，请确认当前请求是http请求"),
    ERROR_NULL_PARAMS("115", "参数为空错误"),

    USER_NOT_EXIST("1000", "用户不存在"),
    ACCOUNT_HAVE_MANY("1001", "系统错误，账号存在多个"),

    SYSTEM_ROLE_CANT_DELETE("2000", "系统角色不能被删除"),
    SUPER_ADMIN_ROLE_ERROR("2001", "超级管理员角色不能被修改"),
    ROLE_CODE_ERROR("2002", "角色编码不能被修改"),

    APP_CANNOT_DELETE("3000", "该应用下有菜单，无法删除"),
    ACTIVE_ERROR("3001", "激活应用失败，该应用没有菜单"),
    APP_NOT_EXIST("3002", "应用不存在"),
    MENU_BUTTON_NOT_EXIST("3003", "菜单按钮不存在"),
    CANT_MOVE_APP("3004", "本菜单无法修改应用，非一级菜单，不能改变所属应用"),
    MENU_NOT_EXIST("3005", "菜单不存在"),
    TABLE_UNIQUE_VALIDATE_ERROR("3006", "数据库字段值唯一性校验出错"),

    CAPTCHA_ERROR("3007", "生成验证码错误"),
    CAPTCHA_INVALID_ERROR("3008", "验证码过期，请从新生成验证码"),

    REQUEST_USER_STATUS_EMPTY("3009", "请求状态值为空"),
    REQUEST_USER_STATUS_ERROR("3010", "请求状态值不合法，用户状态参数不合法"),


    CAPTCHA_EMPTY("3011", "验证码参数不能为空"),
    DRAG_CAPTCHA_ERROR("3012", "拖拽验证码错误"),
    SYSTEM_RESOURCE_URL_NOT_INIT("3013", "系统资源尚未初始化完毕，请稍后使用系统"),
    USER_STATUS_ERROR("3014", "请检查用户状态是否正常"),


    DICT_NOT_EXISTED("3015", "父级id不存在，输入的父级id不合理"),
    DICT_CODE_OR_NAME_REPEAT("3016", "同类字典类型下，字典编码/名字重复"),
    DICT_TYPE_NOT_EXISTED("3018", "字典类型不存在"),
    SYSTEM_DICT_NOT_ALLOW_OPERATION("3019", "系统字典不允许操作，如需操作请联系超级管理员！"),

    CANT_FIND_APPS("3020", "无法获取菜单，所有应用已被禁用"),
    CONFIG_NOT_EXIST("3030", "系统配置表不存在该配置"),
    CONVERT_ERROR("3031", "获取系统配置值时，强转类型异常"),
    CONFIG_SYS_CAN_NOT_DELETE("3040", "删除失败，不能删除系统参数"),

    RESOURCE_NOT_EXIST("3050", "系统资源不存在"),
    ROLE_IS_EMPTY("3051", "用户角色未绑定，登录失败"),
    AUTH_EXPIRED_ERROR("3052", "当前登录会话过期，请重新登录"),
    TOKEN_GET_ERROR("3053", "获取token失败，请检查header和param中是否传递了用户token"),


    PARAM_EMPTY("4000", "登陆失败，账号或密码参数为空"),
    LOGIN_LOCKED("4001", "密码重试次数过多，帐号被锁定"),
    CONFIG_CONTAINER_IS_NULL("4002", "配置容器为空，请先初始化配置容器"),
    USERNAME_PASSWORD_ERROR("4003", "账号密码错误"),
    ACCOUNT_NOT_EXIST("4004", "用户账号或密码错误"),

    CLASS_NOT_FOUND_ERROR("4005", "初始化系统配置表失败，找不到com.mysql.cj.jdbc.Driver驱动类"),
    CONFIG_SQL_EXE_ERROR("4006", "初始化系统配置表失败，执行查询语句失败"),
    APP_DB_CONFIG_ERROR("4007", "获取不到application.yml中的数据库配置，无法从数据库加载系统配置表"),

    ;


    private final String code;
    private final String message;

    ErrorEnum(String code, String message) {
        this.code = code;
        this.message = message;
    }

}
